package com.example.usercenter.once;

import com.alibaba.excel.EasyExcel;

import java.util.List;

/**
 * 导入Excel
 */
public class ImportExcel {
    /**
     * 读取数据
     */
    public static void main(String[] args) {
        // 写法1：JDK8+ ,不用额外写一个DemoDataListener
        // since: 3.0.0-beta1
        String fileName ="D:\\项目\\user-center\\src\\main\\resources\\test.xlsx";
//        readByListener(fileName);
        synchronousRead(fileName);
    }

    /**
     * 同步读取:无需创建监听器,一次性获取完整数据,方便简单,但是数据量大时会有等待时常,也可能内存溢出
     * @param fileName
     */
    public static void synchronousRead(String fileName){
        //这里需要指定设置哪个class去读，然后读取第一个sheet 同步读取会自动finish
        List<XingQiuTableUserInfo> totalDataList
                =EasyExcel.read(fileName).head(XingQiuTableUserInfo.class).sheet().doReadSync();
        for (XingQiuTableUserInfo xingQiuTableUserInfo:totalDataList){
            System.out.println(xingQiuTableUserInfo);
        }
    }


    /**
     * 监听器读取: 先创建监听器,再读取文件时绑定监听器.单独抽离处理逻辑
     * ,代码清晰易于维护;一条一条处理,适用于数据量大的场景.
     * @param fileName
     */
    public static void readByListener(String fileName){
        // 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行
        // 具体需要返回多少行可以在`PageReadListener`的构造函数设置
        EasyExcel.read(fileName, XingQiuTableUserInfo.class,new TabeleListener()).sheet().doRead();
    }
}
